tooltip: Ensure our quark is not 0
authorMatthias Clasen <mclasen@redhat.com>
Fri, 6 May 2016 04:45:05 +0000 (00:45 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 6 May 2016 10:44:28 +0000 (06:44 -0400)
Many of the tooltip functions can be called before a tooltip
object is created, and thus initializing the quark in class_init
is not good enough.

gtk/gtktooltip.c

index 269425fc765e99555071b2d9a144af0485c2e7d6..6ce17ca41e74b45491695ec74295a0466c289d96 100644 (file)
@@ -148,7 +148,16 @@ static void       gtk_tooltip_display_closed       (GdkDisplay      *display,
 static void       gtk_tooltip_set_last_window      (GtkTooltip      *tooltip,
                                                    GdkWindow       *window);
 
-static GQuark quark_current_tooltip;
+static inline GQuark tooltip_quark (void)
+{
+  static GQuark quark;
+
+  if G_UNLIKELY (quark == 0)
+    quark = g_quark_from_static_string ("gdk-display-current-tooltip");
+  return quark;
+}
+
+#define quark_current_tooltip tooltip_quark()
 
 G_DEFINE_TYPE (GtkTooltip, gtk_tooltip, G_TYPE_OBJECT);
 
@@ -160,8 +169,6 @@ gtk_tooltip_class_init (GtkTooltipClass *klass)
   object_class = G_OBJECT_CLASS (klass);
 
   object_class->dispose = gtk_tooltip_dispose;
-
-  quark_current_tooltip = g_quark_from_static_string ("gdk-display-current-tooltip");
 }
 
 static void